Configurable clock tree

ABSTRACT

System, methods and apparatus are described that facilitate transmission of data, particularly between two devices within an electronic apparatus. A configurable clock tree includes a delay matrix that may be configured such that each the timing of clocks for each of a plurality of data lanes can be optimized for minimum skew. Selections between different versions of a base clock signal and different paths available to the selected version may provide a root clock used for transmitting data on a communications link. The versions of the one or more clock signals may include three versions of a first clock signal. Each version of the first clock signal may be subject to a different delay with respect to the clock signal.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present Application for Patent claims priority to ProvisionalApplication No. App. No. 61/872,547, entitled “Configurable Clock Tree”filed Aug. 30, 2013, which is assigned to the assignee hereof and herebyexpressly incorporated by reference herein.

TECHNICAL FIELD

At least one aspect generally relates to high-speed data communicationsinterfaces, and more particularly, to management of clock skew inmulti-lane data links.

BACKGROUND

Data communications links are frequently used to connect components,devices and circuits in electronic equipment. Certain communicationslinks are used that comply or are compatible with industry standards andmanufacturers of the electronic equipment and constituent components,devices and circuits must meet specified timing of clock and datasignals, particularly where the manufacturer has little or no controlover the design and operation of one or more components connected to thedata communications link. For example, manufacturers of mobile devices,such as cellular phones, may obtain components of the mobile devicesfrom various sources, including different manufacturers. In one example,the application processor in a cellular phone may be obtained from afirst manufacturer, while the display for the cellular phone may beobtained from a second manufacturer. Standards may be defined forinterconnecting certain components of the mobile devices, includingconnections between an application processor and a display within themobile device. Some displays provide an interface that conforms to theDisplay System Interface (DSI) standard specified by the Mobile IndustryProcessor Interface Alliance (MIPI).

Of particular importance, are the relationships between transmitted dataand the transmit and receive clocks used to send and receive thetransmitted data. The transmitter is typically designed to minimize theskew between edges of different data signals and between data and clocksignals. The receiver samples data on rising edges, falling edges orbetween successive edges. Timing skew can decrease timing windowsavailable for reliable data capture. As speed of communicationsincreases, skew between data signals, clock signals and between clockand data signals can limit the data transmission rates.

SUMMARY

Certain embodiments disclosed herein employ a configurable clock treethat can configure, minimize, or otherwise optimize clock skew betweenclock signals and/or data signals transmitted on a communications link.The configurable clock tree may include a delay matrix that can beconfigured to provide a plurality of clock lanes. The configurable clocktree may be provided in an Integrated Circuit (IC) device that iscommunicatively coupled by a data communications link to one or moreother IC devices in an electronic apparatus.

In various aspects of the disclosure, a method for data communicationsincludes selecting between versions of one or more clock signals as anoutput of a first-level delay element of a first lane, providing theoutput of the first-level delay element of the first lane tosecond-level delay elements in second and third lanes, and providing aroot clock used to control transmission of data on a communications linkby selecting between the output of the first-level delay element of thefirst lane and outputs of first-level delay elements of the second andthird lanes. The versions of the one or more clock signals may includeat least two versions of a first clock signal. Each version of the firstclock signal may be subject to a different delay with respect to thefirst clock signal.

In an aspect of the disclosure, the first lane may have a transistorpath that matches a transistor path of one or more data lanes of thecommunications link.

In an aspect of the disclosure, the first, second and third lanes mayeach provide a clock to be used in a corresponding data lane. Inputs forthe first level delay element of the first lane and inputs for asecond-level delay element in the first lane may be selected to minimizeskew between the root clock and the clocks provided by the second andthird lanes. Inputs for first level delay elements of the second andthird lanes and the inputs for second-level delay elements of the secondand third lanes may be selected to minimize skew between the root clockand the clocks provided by the second and third lanes. Inputs for firstlevel delay elements of the second and third lanes and the inputs forsecond-level delay elements of the second and third lanes may beselected to minimize skew between data lanes associated with the rootclock and data lanes associated with the clocks provided by the secondand third lanes.

In an aspect of the disclosure, the communications link includesdifferentially encoded data and clock signals. The communications linkmay communicatively couple a first IC device with a second IC device.

In an aspect of the disclosure, the one or more clock signals mayinclude a left clock signal that is delayed by one or more of a firstplurality of delay elements that includes a number of delay elementscorresponding to a number of data lanes disposed to the left of a firstdata lane on an IC. The one or more clock signals may include a rightclock signal that is delayed by one or more of a second plurality ofdelay elements that includes a number of delay elements corresponding toa number of data lanes disposed to the right of the first data lane. Theleft clock signal, or a version thereof, may be selected as an output ofthe first-level delay element. The right clock signal, or a versionthereof, may be selected as an output of the first-level delay element.

In an aspect of the disclosure, each delay element may be in an activeclocking mode and a power-down mode. One or more delay elements that donot contribute to the provision of the root clock may be powered down.

In various aspects of the disclosure, an apparatus includes an interfaceto a communications link that communicatively couples a first IC devicewith a second IC device, means, circuits and/or modules for selectingbetween versions of one or more clock signals as an output of afirst-level delay element of a first clock lane, and means, circuits ormodules for providing a root clock as an output of the first clock lane.The root clock may be used for transmitting data on the communicationslink. The versions of the one or more clock signals may include at leasttwo versions of a first clock signal, where each version of the firstclock signal is subject to a different delay with respect to the firstclock signal. The root clock may be provided by configuring selectionlogic to select between the output of the first-level delay element ofthe first clock lane and outputs of first-level delay elements of aplurality of other clock lanes.

In an aspect of the disclosure, the first clock lane has a transistorpath that matches a corresponding transistor path in one or more datalanes.

In an aspect of the disclosure, the root clock and output clocksprovided by the plurality of other clock lanes are used in correspondingdata lanes. The inputs for the first level delay element of the firstclock lane and the inputs for a second-level delay element in the firstclock lane may be selected to minimize skew between the root clock andthe output clocks provided by the plurality of other clock lanes. Theinputs for first level delay elements of the plurality of other clocklanes and the inputs for second-level delay elements of the plurality ofother clock lanes may be selected to minimize skew between the rootclock and the output clocks provided by the plurality of other clocklanes. The inputs for first level delay elements of the plurality ofother clock lanes and the inputs for second-level delay elements of theplurality of other clock lanes may be selected to minimize skew betweendata lanes associated with the root clock and data lanes associated withthe output clocks provided by the plurality of other clock lanes.

In an aspect of the disclosure, the one or more clock signals includes aleft clock signal that is delayed by one or more of a first plurality ofdelay elements and a right clock signal that is delayed by one or moreof a second plurality of delay elements. The first plurality of delayelements may include a number of delay elements corresponding to anumber of data lanes disposed to the left of a first data lane on an IC.The second plurality of delay elements may include a number of delayelements corresponding to a number of data lanes disposed to the rightof the first data lane. Certain logic may be configured to select theleft clock signal or the right clock signal as the first clock signal.

In an aspect of the disclosure, the first and second level delayelements may include multiplexing logic. Multiplexing logic that doesnot provide an output used to provide the root clock may be powereddown. Control logic may be configured to select between an activeclocking mode and a power-down mode for portions of the multiplexinglogic in first level delay elements and/or second-level delay elements.

In an aspect of the disclosure, a clock delay matrix includes aplurality of clock lanes provided in an IC device, first-levelmultiplexing logic configured to select between versions of one or morefirst-level clock signals, second-level multiplexing logic configured toprovide a root clock by selecting between an output of the first-levelmultiplexing logic and outputs of first-level multiplexing logic of twoother clock lanes, and a controller that configures the first-levelmultiplexing logic and the second-level multiplexing logic of theplurality of clock lanes. Each clock lane may be configurable to providea clock for controlling data transmissions in a corresponding data laneof a communications interface. The controller may be configured tocontrol clock skew between outputs of the plurality of clock lanes.

In an aspect of the disclosure, each clock lane has a transistor paththat matches a transistor path in a corresponding data lane.

In an aspect of the disclosure, the outputs of the plurality of clocklanes may be used to control a corresponding plurality of data lanes.The controller may control clock skew by configuring the first levelmultiplexing logic and the second-level multiplexing logic in each clocklane to minimize skew between outputs of the each clock lane and the twoother clock lanes. The controller may control clock skew by configuringthe first level multiplexing logic and the second-level multiplexinglogic in each clock lane to minimize skew between data signalstransmitted on the communications interface. The controller may controlclock skew by configuring the first level multiplexing logic and thesecond-level multiplexing logic in each clock lane to minimize skewbetween clock and data signals transmitted on the communicationsinterface.

In an aspect of the disclosure, the one or more first-level clocksignals includes a left clock signal that is delayed by one or more of afirst plurality of delay elements and a right clock signal that isdelayed by one or more of a second plurality of delay elements. Thefirst plurality of delay elements may include a number of delay elementscorresponding to a number of data lanes disposed to the left of a firstdata lane on the IC. The second plurality of delay elements may includea number of delay elements corresponding to a number of data lanesdisposed to the right of the first data lane. Base clock selection logicmay be provided and/or configurable to select the left clock signal orthe right clock signal as a first-level clock signal. The one or morefirst-level clock signals may include the left clock signal and theright clock signal. The one or more first-level clock signals mayinclude versions the left clock signal and the right clock signal.

In an aspect of the disclosure, multiplexing logic that does not providean output used to provide the root clock may be powered down. Thecontroller may be configured to select between an active clocking modeand a power-down mode for portions of the first level multiplexing logicand the second-level multiplexing logic.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an apparatus employing a data link between IC devicesthat selectively operates according to one of plurality of availablestandards.

FIG. 2 illustrates a system architecture for an apparatus employing adata link between IC devices.

FIG. 3 illustrates simplified examples of systems that may be adapted toinclude certain clocking techniques provided according to certainaspects disclosed herein.

FIG. 4 is a block diagram 400 illustrating the architecture of a typicalMIPI-compliant D-PHY system.

FIG. 5 is a block diagram illustrating an example of a MIPI-compliantD-PHY lane transceiver according to certain aspects disclosed herein.

FIG. 6 is a block diagram illustrating a delay cell according to certainaspects disclosed herein.

FIG. 7 illustrates the operation of delay cells according to certainaspects disclosed herein.

FIG. 8 illustrates a software-configurable clock tree circuit accordingto certain aspects disclosed herein.

FIG. 9 illustrates an example in which multiple root clocks may beobtained from a software-configurable clock tree circuit according tocertain aspects disclosed herein.

FIG. 10 illustrates the implementation of a software-configurable clocktree in a clock layer of 45 nm IC according to certain aspects disclosedherein.

FIG. 11 illustrates the implementation of software-configurable clockdelay cells in a 28 nm IC according to certain aspects disclosed herein.

FIG. 12 is a block diagram illustrating an example of an apparatusemploying a processing system that may be adapted according to certainaspects disclosed herein.

FIG. 13 is a flow chart of a method for data transfer according tocertain aspects disclosed herein.

FIG. 14 is a diagram illustrating an example of a hardwareimplementation for an apparatus that may be used to configure a clocktree according to certain aspects disclosed herein.

DETAILED DESCRIPTION

Various aspects are now described with reference to the drawings. In thefollowing description, for purposes of explanation, numerous specificdetails are set forth in order to provide a thorough understanding ofone or more aspects. It may be evident, however, that such aspect(s) maybe practiced without these specific details.

As used in this application, the terms “component,” “module,” “system”and the like are intended to include a computer-related entity, such as,but not limited to hardware, firmware, a combination of hardware andsoftware, software, or software in execution. For example, a componentmay be, but is not limited to being, a process running on a processor, aprocessor, an object, an executable, a thread of execution, a programand/or a computer. By way of illustration, both an application runningon a computing device and the computing device can be a component. Oneor more components can reside within a process and/or thread ofexecution and a component may be localized on one computing deviceand/or distributed between two or more computing devices. In addition,these components can execute from various computer readable media havingvarious data structures stored thereon. The components may communicateby way of local and/or remote processes such as in accordance with asignal having one or more data packets, such as data from one componentinteracting with another component in a local system, distributedsystem, and/or across a network such as the Internet with other systemsby way of the signal.

Moreover, the term “or” is intended to mean an inclusive “or” ratherthan an exclusive “or.” That is, unless specified otherwise, or clearfrom the context, the phrase “X employs A or B” is intended to mean anyof the natural inclusive permutations. That is, the phrase “X employs Aor B” is satisfied by any of the following instances: X employs A; Xemploys B; or X employs both A and B. In addition, the articles “a” and“an” as used in this application and the appended claims shouldgenerally be construed to mean “one or more” unless specified otherwiseor clear from the context to be directed to a singular form.

Certain aspects of the invention may be applicable to communicationslinks deployed between electronic components, including subcomponents ofa device, such as a telephone, a mobile computing device, an appliance,an automobile electronics, an avionics system, etc. FIG. 1 depicts anexample of an apparatus 100 employing a data link between IC devices,where the data link may selectively operate according to one ofplurality of available standards. The apparatus 100 may include awireless communication device that communicates wirelessly with a radioaccess network (RAN), a core access network, the Internet and/or anothernetwork. The apparatus 100 may include a communications transceiver 106operably coupled to a processing circuit 102. The processing circuit 102may include one or more IC devices, such as an application-specific IC(ASIC) 108. The ASIC 108 may include one or more processing devices,sequencers, logic circuits, and so on. The processing circuit 102 mayinclude and/or be coupled to processor readable storage such as a memorydevice 112 that may maintain instructions and data the may be executedand otherwise used by the processing circuit 102. The processing circuit102 may be controlled by one or more of an operating system and anapplication programming interface (API) 110 layer that supports andenables execution of software modules residing in the memory device 112.The memory device 112 may include read-only memory (ROM) and/orrandom-access memory (RAM), electrically-erasable programmable read onlymemory (EEPROM), a flash memory device, or any memory device that can beused in processing systems and computing platforms. The processingcircuit 102 may include and/or access a local database 114 that canmaintain operational parameters and other information used to configureand operate the apparatus 100. The local database 114 may be implementedusing one or more of a database module or server, flash memory, magneticmedia, EEPROM, optical media, tape, soft or hard disk, or the like. Theprocessing circuit may also be operably coupled to external devices suchas an antenna 122, a display 124, operator controls, such as a button128 and a keypad 126, among other components.

FIG. 2 is a block schematic diagram illustrating certain aspects of anapparatus 200 such as a wireless mobile device, a mobile telephone, amobile computing system, a wireless telephone, a notebook computer, atablet computing device, a media player, a gaming device, or the like.The apparatus 200 may include a plurality of IC devices 202 and 230 thatexchange data and control information through a communications link 220.The communications link 220 may be used to interconnect the IC devices202 and 222, which may be located in close proximity to one another orphysically located in different parts of the apparatus 200. In oneexample, the communications link 220 may be provided on a chip carrier,substrate or circuit board that carries the IC devices 202 and 230. Inanother example, a first IC device 202 may be located in a keypadsection of a flip-phone while a second IC device 230 may be located in adisplay section of the flip-phone. In another example, a portion of thecommunications link 220 may include a cable or optical connection.

The communications link 220 may include multiple channels 222, 224 and226. One or more channel 226 may be bidirectional, and may operate inhalf-duplex and/or full-duplex modes. One or more channel 222 and 224may be unidirectional. The communications link 220 may be asymmetrical,providing higher bandwidth in one direction. In one example describedherein, a first communications channel 222 may be referred to as aforward link 222 while a second communications channel 224 may bereferred to as a reverse link 224. The first IC device 202 may bedesignated as a host system or transmitter, while the second IC device230 may be designated as a client system or receiver, even if both ICdevices 202 and 230 are configured to transmit and receive on thecommunications link 222. In one example, the forward link 222 mayoperate at a higher data rate when communicating data from a first ICdevice 202 to a second IC device 230, while the reverse link 224 mayoperate at a lower data rate when communicating data from the second ICdevice 230 to the first IC device 202.

The IC devices 202 and 230 may each include a processor or otherprocessing and/or computing circuit or device 206, 236. In one example,the first IC device 202 may perform core functions of the apparatus 200,including maintaining wireless communications through a wirelesstransceiver 204 and an antenna 214, while the second IC device 230 maysupport a user interface, manage or operate a display controller 232,and/or control operations of a camera or video input device using acamera controller 234. Other features supported by one or more of the ICdevices 202 and 230 may include a keyboard, a voice-recognitioncomponent, and other input or output devices. The display controller 232may include circuits and software drivers that support a display such asa liquid crystal display (LCD) panel, a touch-screen display, anindicator and so on. The storage media 208 and 238 may includetransitory and/or non-transitory storage devices adapted to maintaininstructions and data used by the respective processors 206 and 236,and/or other components of the IC devices 202 and 230. Communicationbetween each processor 206, 236 and its corresponding storage media 208and 238 and other modules and circuits may be facilitated by one or morebus 212 and 242, respectively.

The reverse link 224 may be operated in the same manner as the forwardlink 222, and the forward link 222 and the reverse link 224 may becapable of transmitting at comparable speeds or at different speeds,where speed may be expressed as data transfer rate and/or clockingrates. The forward and reverse data rates may be substantially the sameor may differ by orders of magnitude, depending on the application. Insome applications a bidirectional link 226 may support communicationsbetween the first IC device 202 and the second IC device 230. Theforward link 222 and/or the reverse link 224 may be configurable tooperate in a bidirectional mode when, for example, the forward andreverse links 222 and 224 share the same physical connections andoperate in a half-duplex manner.

In one example, the communications link 220 may be operated tocommunicate control, command and other information between the first ICdevice 202 and the second IC device 230 in accordance with an industryor other standard. Industry standards may be application specific. Forexample, the MIPI standard defines physical layer interfaces including asynchronous interface specification (D-PHY) between an applicationprocessor IC device 202 and an IC device 230 that supports the camera ordisplay in a mobile device. The D-PHY specification governs theoperational characteristics of products that comply with MIPIspecifications for mobile devices. A D-PHY interface may support datatransfers using a flexible, low-cost, high-speed serial interface thatinterconnects IC devices 202, 230 and/or other components within amobile device. These interfaces may include complimentarymetal-oxide-semiconductor (CMOS) compatible parallel busses providingrelatively low bit rates with slow edges to avoid electromagneticinterference (EMI) issues.

FIG. 3 illustrates simplified examples 300, 320 of systems that may beadapted to include certain of the clocking techniques, apparatus andmethods disclosed herein. In a first example, 300, a display processor302 generates display data for a display device 124 (see FIG. 1). Thedisplay processor 302 may be integrated with a processing circuit 206(see FIG. 2), for example. Data may be transmitted through acommunications link 220 to a device 230 that includes a displaycontroller 232.

The communications link 220 may be configurable and may comply or becompatible with a MIPI standard DSI interface as described herein.Display pixel data originating from display processor 302 is provided toMIPI DSI Link Controller 304, which formats the display pixel data intopackets to be sent over a high-speed serial interface to the display,typically through the display controller 232. Both display pixel dataand control information may be transmitted over this link 220.

In a second example, 320, a camera processor 322 receives camera datafrom a camera or imaging device. The camera processor 322 may beintegrated with a processing circuit 206 (see FIG. 2). In one example,the camera processor 322 may be implemented using a processing circuit206 that is adapted to perform certain core functions in a wirelessprocessing or communications device. Image data may be received from adevice 230 through a communications link 220 that includes a cameracontroller 234.

The communications link 220 may be configurable and may comply or becompatible with a Camera Serial Interface (CSI) as defined by MIPIspecifications. Image pixel data may be received using a MIPI CSI LinkController 324. Both image pixel data and camera control information maybe transmitted over this link 220.

Certain aspects of this disclosure may be described in reference to thefirst example 300 in FIG. 3, which illustrates a MIPI DSI link. It willbe appreciated that the concepts and principles disclosed herein areapplicable to other types of communication link, including the MIPI CSIlink illustrated in the second example 320 in FIG. 3.

In the first example 300, data packets generated by the MIPI DSI LinkController 304 in the digital core logic circuitry 310 of an integratedcircuit (IC) device may be provided to a MIPI D-PHY Pre-Driver 306,which may be realized in an input/output section (PAD Ring) 312 of theIC device. The data packets may be provided to a set of output drivers,such as differential line drivers for example. An IC device maycommunicate with external devices through bonding pads that may beprovided in the PAD Ring 312 that is arranged around the digital corelogic circuitry 310. Power supplies may also be provided through bondingpads. In some instances, devices provided in the core logic section 310and circuits used to transmit signals through output pads and receivesignals through input pads may have different operationalcharacteristics, including different maximum switching frequencies,and/or different maximum voltage and current levels.

FIG. 4 is a diagram illustrating the architecture of one example of aMIPI-compliant D-PHY system 400. The illustrated D-PHY system 400includes a first device 410, which may serve as a transmitter, server,or master device, and a second device 430, which may operate as areceiver, client or slave device. Application layer software 402 and 422may communicate using a protocol 404 and 424 that enables data andcontrol information to be transmitted through lower level software andhardware components 406, 408, 426, and 428. In one example, data istransferred over a plurality of lanes 412 of the communications link,under the supervision and control of lane management modules 406 and426. Data transmission between the devices 410 and 430 occurs at thephysical layer (PHY) using circuits and modules 408 and 428 that drivethe physical connections 412. In some instances, one or more high-speedunidirectional clocks 414 may be provided between the devices 410, 430to control data transfers over the physical connections 412. Thephysical connections 412 may support multiple data lanes, which mayinclude unidirectional and/or bidirectional lanes. The master device 410typically provides the high-speed unidirectional clock signals 414 thatenable a receiver 430 to decode the data from the data lanes of physicalconnections 412. The clock signals 414, and other timing signals orclocks may be generated by the PHY layer 408 and/or 428, or provided tothe PHY layer 408 and/or 428 by specialized or customized clockinglogic.

FIG. 5 is a block diagram illustrating an example of a MIPI-compliantD-PHY lane transceiver 500. The lane transceiver 500 may be used forcommunications through the connectors of one data lane 508 of a D-PHYinterface. The lane transceiver 500 may include transmitter circuitsand/or modules 514, 524 and receiver circuits and/or modules 516, 526that operate under control of higher-level modules and that may use oneor more clocks that may be generated internally, derived from externallygenerated clock signals, or some combination thereof.

A processing circuit 502 may be configured to handle various aspects ofthe protocols used to communicate information over the data lane 508.The processing circuit 502 may be adapted or configured to implement oneor more protocols, such as the DSI protocol, the CSI protocol, and/orthe MIPI unified protocol (UniPro). Data and control signals may becommunicated between the processing circuit 502 and a transceiver 504 orother device configured to generate signals that can be transmitted onthe data lane 508. In one example, data and control signals may becommunicated using a PHY Protocol Interface (PPI). For the purposes ofthis discussion, it can be assumed that data and control signals aredistributed within the transceiver 504 using a network of connections512 that may include one or more buses, or the like.

The transceiver may include a data interface 520 and a control interface522 that encode, transmit, receive and decode signals exchanged with theprocessing circuit 502. In some instances, certain common logic may beshared between the data interface 520 and the control interface 522. Thetransceiver 504 may include transmit logic that can select between datastreams that may include data provided by the processing circuit inaccordance with one or more data transmission protocols, predefinedsequences of bits and other control information. In one example, apacket of data received from the processing circuit may be serializedfor transmission on the data lane 508. Serialized data may then beprovided to differential line drivers for transmission on the physicalconnectors corresponding to the data lane 508.

Differential receivers 526 may be configured to receive information fromthe physical connectors corresponding to the data lane 508. Thedifferential receivers 526 may be coupled to decoding circuits 506 thatprovide decoded data and control information that may be transmitted tothe processing circuit 502. In some instances, line-monitoring circuits528 may support error detection logic 516 that may be used to ensurereliable communication over the data lane 508. A state machine or otherprocessor 516 may be provided to control communications operationsassociated with the data lane 508.

The MIPI D-PHY layer enables significant extension of interfacebandwidths for more advanced applications such as mobile display andcameras. A high speed, low power, source-synchronous multiple data lanemodule interface protocol provides up to 1.5 gigabits per second perdata lane. Due to the very tight lane skew specification along with90-degree phase shift clock lane, data and clock lane paths musttypically be identical in order to ensure the same data path delay.Clock trees used by the D-PHY are dependent on the number of data lanesin service and the clock tree root may be required to have a fixed clocklane location.

As described herein, a configurable clock tree is described whereby anumber of data lanes can be configured as multiple D-PHY links, and anydata lane can be configured as clock lane with fixed cyclic datapattern. In order to configure any lane to be clock lane and clock treeroot, a configurable clock delay cell may be used for multi-lane sourcesynchronized protocol interfaces.

FIG. 6 is a block diagram illustrating a delay cell 600 of a modularclock tree that may be employed, for example, in the D-PHY layers 408and/or 428 to provide, configure and/or adapt a clock that controls datatransmission. The delay cell 600 may be configured to permit selectionof the source of a clock 610 to be output by the delay cell 600.Potential sources may include different versions of a base input clock602, including advanced and delayed versions of the base clock 602provided at left side input 612 and a right-side input 614,respectively. In one example, lanes may be deployed to the left andright of the physical location of the root lane, of which delay cell 600may be an element. With respect to the illustrated delay cell 600, theuse of the terms “right” and “left” in reference to lane structure andsignals is figurative and is not intended to impute any physicalattribute or characteristic to the design, structure or configuration ofthe delay cell 600.

The delay cell 600 is configurable in that the output 610 may beselected from the three inputs 602, 612, and 614. In one example,control signals is_clk 616 and is_r 618 control multiplexers 604 a, 604b, and 606. First-level multiplexing is provided by the two first-levelmultiplexers 604 a, 604 b that are controlled by the is_clk signal 616,while the multiplexer 606 provides second-level multiplexing and iscontrolled by the is_r signal 618. In one example, the delay cell 600passes the clock root (i.e. the input clock signal 602) to the output610, as indicated by the thick line 608. In this example, the is_clksignal 616 is set to logic 1 causing both first-level multiplexers 604 aand 604 b to pass the root clock through to the inputs of thesecond-level multiplexer 606. The is_r signal 618 selects between rightinput (labeled 0) 620 and left input (labeled 1) 622 of the second-levelmultiplexer 606. The value of the is_r signal 618 may be immaterial whenboth inputs to the second layer multiplexer 606 receive the clock root;that is, when the is_clk signal 616 is set to logic 1. In some examples,the is_r signal 618 may be used to suppress the output of the delay cell600 in power-down mode, when the is_clk signal 616 is set to logic 1.When the is_clk signal 616 is set to logic 0, the second-levelmultiplexer 606 selects between the signals provided at the left (i_l)input 612 and the right (i_r) input 614.

FIG. 7 is a diagram 700 that illustrates the operation of two delaycells 702 and 722 when the is_clk signal 710 and 730 is set to 0. Thetwo delay cells 702, 722 may be left and right leaves in a configurableclock tree circuit as described herein. In one delay cell 702, the right(i_r) input 708 may be provided at the output 706 of the delay cell 702when the is_clk signal 710 is set to logic 0 and the is_r signal 712 isset to logic 1. In the other delay cell 722 the left (i_l) input 728 maybe provided at the output 726 of the delay cell 722 when the is_clksignal 730 is set to logic 0 and the is_r signal 732 is set to logic 0.

In the example, the is_r signal 712 for the left leaf delay cell 702 isset to 0, thereby selecting the right side input of the second-levelmultiplexer 714, and the output 706 of the left leaf delay cell 702accordingly follows the right-side input 708 as shown by the thick line704. The is_r signal 732 for the right leaf delay cell 722 is set to 1,thereby selecting the left side input of the second-level multiplexer734, and the output 726 of the right leaf delay cell 722 accordinglyfollows the left-side input 728 as shown by the thick line 724.

According to certain aspects disclosed herein, a plurality of theconfigurable clock delay cells 600, 702, 722 may be used to create astack of 4-to-1 multiplexers that can determine the delay path eitherfrom the clock root or from left or right side data lanes, and/or powerdown the delay path. The stack may be formed in a matrix of delay cells600 arranged in two or more levels, whereby each delay cell 600 in thematrix can select from a primary input as well as left and right inputswhich typically include timing advances or delays with respect to theprimary input. The delay cells 600 may also be configured to enter apower down, or low-power mode when a fourth path (i.e. fourth “dummy” orduplicate input selected as an output 610) is selected. The clock treedelay path crossing lanes (i.e. left-to-right or right-to-left) for eachlane, and between lanes, are based on the same configuration oftransistor device paths, and delay variations may be limited tovariations in metal (resistance-capacitance) RC values which are subjectto small process, voltage and temperature (PVT) variation. Accordingly,physical designs can be easily manipulated to obtain metered RC delaymatch. The matched transistor paths may eliminate the need for clocktree balance crossing lanes.

FIG. 8 is a block schematic diagram illustrating a first example inwhich multiple clocks may be obtained from a software-configurable clocktree circuit 800. Clocks 804, 806, 810 and 812 are generated for tworight lanes and two left lanes, along with a root clock 808. It will beappreciated that the root clock 808 may be selected from various pointsin a delay line 816, which provides multiple delayed versions of thesource bit-clock 802. The delay line 816 may be implemented with seriesconnected delay elements, which may include buffer devices 814 a-814 e.The root clock 808 may be selected by configuring the various is_r andis_clk signals to direct the desired clock source to the output pin 808,without increasing the number of logic elements between clock source andoutput pin 808. Each of a plurality of clock outputs 804, 806, 810,and/or 812 may be similarly configured. In the configuration illustratedin FIG. 8, two of the configurable clock delay cells 818 a, 818 b arenot included in the trees that provide the clocks 804, 806, 808, 810 and812 and these configurable clock delay cells 818 a, 818 b may be powereddown.

FIG. 9 is a block schematic diagram illustrating a second example inwhich multiple clocks may be obtained from a software-configurable clocktree circuit 900. Here, a left bit clock source 902 and right bit clocksource 914 may be provided to respective left and right delay lines 916,918. The left bit clock source 902 and right bit clock source 914 may bederived from two different root clock sources, and may have the same ordifferent frequencies. A root clock 908 and lane clocks 904, 906, 910and 912 for two left lanes and two right lanes may be generated withconfigurable relative timing from the left bit clock source 902 and/orthe right bit clock source 914, as illustrated in FIG. 8. An additionallevel of multiplexing 920 may be provided to select between clocksderived from the left bit clock source 902 and right bit clock source914. The use of “left and right” in qualifying lanes and correspondingclocks may be literal or figurative, but may relate to physical locationof data lanes about a root clock lane in some instances. The example inFIG. 9 illustrates a first root clock 908 that may besoftware-configured to choose a left bit clock source 902, and a secondroot clock 910 that may be software-configured to choose a right bitclock source 914, which may have the same or a different clock frequencythan the left bit clock source 902. The clock tree circuit may beconfigured such that two left lanes 904 and 906 may be based on thefirst root clock 908, and a right lane 912 may be based on the secondroot clock 910. In the configuration illustrated in FIG. 8, two of theconfigurable clock delay cells 922 a, 922 b are not included in thetrees that provide the clocks 904, 906, 908, 910 and 912 and theseconfigurable clock delay cells 922 a, 922 b may be powered down.

FIG. 10 is a diagram 1000 illustrating an example of a DSI PHY circuit1002 provided on a 45 nm IC device. The PHY circuit 1002 may include aclock layer 1012 adapted according to certain aspects disclosed herein.For example, the clock layer may a software-configurable clock tree. Thesoftware-configurable clock tree may be configured by a DSI linkcontroller 1008, for example. The configuration of thesoftware-configurable clock tree may be based on information obtainedfrom calibration logic 1008, which may generate calibration informationusing built-in self test (BIST) patterns, or the like. Thesoftware-configurable clock tree may use a base clock that is obtainedfrom clock generation circuitry, including a phase-locked loop 1006, forexample.

FIG. 11 is a diagram 1100 illustrating an example of the implementationof software-configurable clock delay cells in a 28 nm integrated circuit1102. Left and right flowing source clocks 1104 and 1106 may be providedto one or more software-configurable clock trees in order to obtain aset of clocks with metered RC delay matching.

FIG. 12 is a conceptual diagram 1200 illustrating a simplified exampleof a hardware implementation for an apparatus employing a processingcircuit 1202 that may be configured to perform one or more functionsdisclosed herein. For example, the processing circuit may be deployed asthe processing circuit 102 of FIG. 1, at least a portion of the device202 or the device 230 of FIG. 2, the processing circuit 502 of FIG. 5,the DSI Link controller 1008 of FIG. 10, etc. In accordance with variousaspects of the disclosure, an element, or any portion of an element, orany combination of elements as disclosed herein may be implemented usingthe processing circuit 1202. The processing circuit 1202 may include oneor more processors 1204 that are controlled by some combination ofhardware and software modules. Examples of processors 1204 includemicroprocessors, microcontrollers, digital signal processors (DSPs),field programmable gate arrays (FPGAs), programmable logic devices(PLDs), state machines, sequencers, gated logic, discrete hardwarecircuits, and other suitable hardware configured to perform the variousfunctionality described throughout this disclosure. The one or moreprocessors 1204 may include specialized processors that perform specificfunctions, and that may be configured, augmented or controlled by one ofthe software modules 1216. The one or more processors 1204 may beconfigured through a combination of software modules 1216 loaded duringinitialization, and further configured by loading or unloading one ormore software modules 1216 during operation.

In the illustrated example, the processing circuit 1202 may beimplemented with a bus architecture, represented generally by the bus1210. The bus 1210 may include any number of interconnecting buses andbridges depending on the specific application of the processing circuit1202 and the overall design constraints. The bus 1210 links togethervarious circuits including the one or more processors 1204, and storage1206. Storage 1206 may include memory devices and mass storage devices,and may be referred to herein as computer-readable media and/orprocessor-readable media. The bus 1210 may also link various othercircuits such as timing sources, timers, peripherals, voltageregulators, and power management circuits. A bus interface 1208 mayprovide an interface between the bus 1210 and one or more transceivers1212. A transceiver 1212 may be provided for each networking technologysupported by the processing circuit. In some instances, multiplenetworking technologies may share some or all of the circuitry orprocessing modules found in a transceiver 1212. Each transceiver 1212provides a means for communicating with various other apparatus over atransmission medium. Depending upon the nature of the apparatus, a userinterface 1218 (e.g., keypad, display, speaker, microphone, joystick)may also be provided, and may be communicatively coupled to the bus 1210directly or through the bus interface 1208.

A processor 1204 may be responsible for managing the bus 1210 and forgeneral processing that may include the execution of software stored ina computer-readable medium that may include the storage 1206. In thisrespect, the processing circuit 1202, including the processor 1204, maybe used to implement any of the methods, functions and techniquesdisclosed herein. The storage 1206 may be used for storing data that ismanipulated by the processor 1204 when executing software, and thesoftware may be configured to implement any one of the methods disclosedherein.

One or more processors 1204 in the processing circuit 1202 may executesoftware. Software shall be construed broadly to mean instructions,instruction sets, code, code segments, program code, programs,subprograms, software modules, applications, software applications,software packages, routines, subroutines, objects, executables, threadsof execution, procedures, functions, algorithms, etc., whether referredto as software, firmware, middleware, microcode, hardware descriptionlanguage, or otherwise. The software may reside in computer-readableform in the storage 1206 or in an external computer readable medium. Theexternal computer-readable medium and/or storage 1206 may include anon-transitory computer-readable medium. A non-transitorycomputer-readable medium includes, by way of example, a magnetic storagedevice (e.g., hard disk, floppy disk, magnetic strip), an optical disk(e.g., a compact disc (CD) or a digital versatile disc (DVD)), a smartcard, a flash memory device (e.g., a “flash drive,” a card, a stick, ora key drive), a random access memory (RAM), a read only memory (ROM), aprogrammable ROM (PROM), an erasable PROM (EPROM), an electricallyerasable PROM (EEPROM), a register, a removable disk, and any othersuitable medium for storing software and/or instructions that may beaccessed and read by a computer. The computer-readable medium and/orstorage 1206 may also include, by way of example, a carrier wave, atransmission line, and any other suitable medium for transmittingsoftware and/or instructions that may be accessed and read by acomputer. Computer-readable medium and/or the storage 1206 may reside inthe processing circuit 1202, in the processor 1204, external to theprocessing circuit 1202, or be distributed across multiple entitiesincluding the processing circuit 1202. The computer-readable mediumand/or storage 1206 may be embodied in a computer program product. Byway of example, a computer program product may include acomputer-readable medium in packaging materials. Those skilled in theart will recognize how best to implement the described functionalitypresented throughout this disclosure depending on the particularapplication and the overall design constraints imposed on the overallsystem.

The storage 1206 may maintain software maintained and/or organized inloadable code segments, modules, applications, programs, etc., which maybe referred to herein as software modules 1216. Each of the softwaremodules 1216 may include instructions and data that, when installed orloaded on the processing circuit 1202 and executed by the one or moreprocessors 1204, contribute to a run-time image 1214 that controls theoperation of the one or more processors 1204. When executed, certaininstructions may cause the processing circuit 1202 to perform functionsin accordance with certain methods, algorithms and processes describedherein.

Some of the software modules 1216 may be loaded during initialization ofthe processing circuit 1202, and these software modules 1216 mayconfigure the processing circuit 1202 to enable performance of thevarious functions disclosed herein. For example, some software modules1216 may configure internal devices and/or logic circuits 1222 of theprocessor 1204, and may manage access to external devices such as thetransceiver 1212, the bus interface 1208, the user interface 1218,timers, mathematical coprocessors, and so on. The software modules 1216may include a control program and/or an operating system that interactswith interrupt handlers and device drivers, and that controls access tovarious resources provided by the processing circuit 1202. The resourcesmay include memory, processing time, access to the transceiver 1212, theuser interface 1218, and so on.

One or more processors 1204 of the processing circuit 1202 may bemultifunctional, whereby some of the software modules 1216 are loadedand configured to perform different functions or different instances ofthe same function. The one or more processors 1204 may additionally beadapted to manage background tasks initiated in response to inputs fromthe user interface 1218, the transceiver 1212, and device drivers, forexample. To support the performance of multiple functions, the one ormore processors 1204 may be configured to provide a multitaskingenvironment, whereby each of a plurality of functions is implemented asa set of tasks serviced by the one or more processors 1204 as needed ordesired. In one example, the multitasking environment may be implementedusing a timesharing program 1220 that passes control of a processor 1204between different tasks, whereby each task returns control of the one ormore processors 1204 to the timesharing program 1220 upon completion ofany outstanding operations and/or in response to an input such as aninterrupt. When a task has control of the one or more processors 1204,the processing circuit is effectively specialized for the purposesaddressed by the function associated with the controlling task. Thetimesharing program 1220 may include an operating system, a main loopthat transfers control on a round-robin basis, a function that allocatescontrol of the one or more processors 1204 in accordance with aprioritization of the functions, and/or an interrupt driven main loopthat responds to external events by providing control of the one or moreprocessors 1204 to a handling function.

FIG. 13 is a flowchart 1300 that illustrates the operation of aconfigurable clock tree clock circuit. The configurable clock tree clockcircuit may be provided on semiconductor IC device or the like. Theconfigurable clock tree clock circuit may include a delay matrix adaptedand/or configurable according to certain aspects disclosed herein. Theflowchart 1300 may relate to an IC device that includes an interface toa data communications link.

At step 1302, an output of a first-level delay element of a first laneis selected. The output of the first-level delay element may be selectedfrom versions of one or more clock signals. The versions of the one ormore clock signals may include at least two versions of a first clocksignal, and each version of the first clock signal may be subject to adifferent delay with respect to the first clock signal.

At step 1304, the output of the first-level delay element of the firstlane may be provided to second-level delay elements in second and thirdlanes.

At step 1306, a root clock may be provided. The root clock may be usedto control transmission of data on the communications link by selectingbetween the output of the first-level delay element of the first laneand outputs of first-level delay elements of the second and third lanes.

In an aspect of the disclosure, the first lane may have a transistorpath that matches a transistor path of one or more data lanes.

In an aspect of the disclosure, the first, second and third lanes mayprovide clocks to be used in corresponding data lanes of thecommunications link. Inputs for the first level delay element of thefirst lane and the inputs for a second-level delay element in the firstlane may be selected to minimize skew between the root clock and theclocks provided by the second and third lanes. Inputs for first leveldelay elements of the second and third lanes and the inputs forsecond-level delay elements of the second and third lanes may beselected to minimize skew between the root clock and the clocks providedby the second and third lanes. Inputs for first level delay elements ofthe second and third lanes and the inputs for second-level delayelements of the second and third lanes are selected to minimize skewbetween data lanes associated with the root clock and data lanesassociated with the clocks provided by the second and third lanes.

In an aspect of the disclosure, differentially encoded data and clocksignals are transmitted on the communications link. The communicationslink may communicatively couple a first IC device with a second ICdevice. The communications link may include interconnects within an ICdevice, on a chip carrier and/or other circuit board. In one example,the interconnects may be provided as traces formed in a metallizationlayer of a semiconductor IC device. The first and second IC devices maybe semiconductor devices. The first and second IC devices may include asemiconductor IC device such as the IC devices illustrated in FIGS. 10and 11.

In an aspect of the disclosure, the one or more clock signals includes aleft clock signal that is delayed by one or more of a first plurality ofdelay cells and a right clock signal that is delayed by one or more of asecond plurality of delay cells. In one example, the first plurality ofdelay cells may include a number of buffer devices corresponding to anumber of data lanes disposed to the left of a first data lane on an IC.The second plurality of delay cells may include a number of delay cellscorresponding to a number of data lanes disposed to the right of thefirst data lane. In one example, selecting between versions of the oneor more clock signals as an output of the first-level delay element ofthe first lane includes selecting between the left clock signal and theright clock signal.

In an aspect of the disclosure, the first level delay element and secondlevel delay element may include multiplexing logic configured to selectbetween versions of one or more clock signals provided as inputs to themultiplexing logic. Multiplexing logic that does not provide an outputused to provide the root clock may be powered down. A controller may beconfigured to select between an active clocking mode and a power-downmode for portions of multiplexing logic in the first level delayelements and the second-level delay elements.

In an aspect of the disclosure, the means for selecting versions of oneor more clock signals as an output of a first-level delay element of afirst lane may include a plurality of multiplexers 604 a, 604 b and 606(see FIG. 6) arranged in two multiplexing levels. The means forselecting versions of one or more clock signals as an output of afirst-level delay element of a first lane may further include controlsignals 612, 614, 616 and 618 that may be generated by a controller orprocessor to configure an array, matrix or stack of delay elements 600.

In an aspect of the disclosure, first-level delay elements of the first,second and third lanes may include a plurality of multiplexers 604 a,604 b and 606 arranged in two multiplexing levels. Versions of one ormore clock signals 602, 612, 614 may be selected as an output of afirst-level delay element of a first lane using one or more controlsignals 616 and 618 that may be generated by a controller or processorused to configure an array, matrix or stack of delay elements or cells600. The delay cells 600 in one or more clock lanes may be configured tomatch the configuration of data lanes used to provide signals fortransmission over the communications link. The clock lanes and datalanes may include portions that are formed in the same matrix of delaycells.

In an aspect of the disclosure, a clock delay matrix includes aplurality of clock lanes on an IC device. Each clock lane may includedelay cells configured to provide a clock for controlling datatransmissions in a corresponding data lane. Each clock lane may includefirst-level multiplexers configured to select between three delayedversions of one or more base clocks, a second-level multiplexerconfigured to select between an output of the first-level multiplexersand outputs of first-level multiplexers for two different clock lanes,and a controller that configures first-level multiplexers andsecond-level multiplexers of the plurality of clock lanes to minimizeclock skew between outputs of the plurality of clock lanes andcorresponding data lanes.

FIG. 14 is a conceptual diagram illustrating an example of a hardwareimplementation for an apparatus 1400 employing a processing circuit1402. In this example, the processing circuit 1402 may be implementedwith a bus architecture, represented generally by the bus 1416. The bus1416 may include any number of interconnecting buses and bridgesdepending on the specific application of the processing circuit 1402 andthe overall design constraints. The bus 1416 links together variouscircuits including one or more processors, represented generally by theprocessor 1412, and computer-readable media, represented generally bythe processor-readable storage medium 1414. The bus 1416 may also linkvarious other circuits such as timing sources, timers, peripherals,voltage regulators, and power management circuits. A bus interface 1418provides an interface between the bus 1416 and a transceiver 1420. Thetransceiver 1420 may include a bus interface that provides a means forcommunicating with various other apparatus over a transmission medium.Depending upon the nature of the apparatus, a user interface 1422 (e.g.,keypad, display, speaker, microphone, joystick) may also be provided.One or more clock generation circuits or modules 1424 may be providedwithin the processing circuit 1402 or controlled by processing circuit1402 and/or one or more processors 1412. In one example, the clockgeneration circuits or modules 1424 may include one or more crystaloscillators, one or more phase-locked loop devices, and/or one or moreconfigurable clock trees.

The processor 1412 is responsible for managing the bus 1416 and generalprocessing, including the execution of software stored on theprocessor-readable storage medium 1414. The software, when executed bythe processor 1412, causes the processing circuit 1402 to perform thevarious functions described supra for any particular apparatus. Theprocessor-readable storage medium 1414 may be used for storing data thatis manipulated by the processor 1412 when executing software.

In one configuration, the processing circuit may include modules and/orcircuits 1404, 1424 for clock generation, which may include a PLL, aconfigurable clock tree and other logic and circuitry. The processingcircuit may include one or more calibration modules and/or circuits1406, which may include modules and/or circuits for BIST patterngeneration, transmission wire monitoring, error detection, and the like.The processing circuit may include modules and/or circuits 1408 forconfiguring a clock tree. In one example, the modules and/or circuits1408 may cooperate to select one or more versions at least one clocksignal as an output of a first-level delay element of a first lane,provide the output of the first-level delay element of the first lane tosecond-level delay elements in second and third lanes, and selectbetween the output of the first-level delay element of the first laneand outputs of first-level delay elements of the second and third lanesto provide a root clock used for transmitting data on a communicationslink.

It is understood that the specific order or hierarchy of steps in theprocesses disclosed is an illustration of exemplary approaches. Basedupon design preferences, it is understood that the specific order orhierarchy of steps in the processes may be rearranged. The accompanyingmethod claims present elements of the various steps in a sample order,and are not meant to be limited to the specific order or hierarchypresented.

The previous description is provided to enable any person skilled in theart to practice the various aspects described herein. Variousmodifications to these aspects will be readily apparent to those skilledin the art, and the generic principles defined herein may be applied toother aspects. Thus, the claims are not intended to be limited to theaspects shown herein, but is to be accorded the full scope consistentwith the language claims, wherein reference to an element in thesingular is not intended to mean “one and only one” unless specificallyso stated, but rather “one or more.” Unless specifically statedotherwise, the term “some” refers to one or more. All structural andfunctional equivalents to the elements of the various aspects describedthroughout this disclosure that are known or later come to be known tothose of ordinary skill in the art are expressly incorporated herein byreference and are intended to be encompassed by the claims. Moreover,nothing disclosed herein is intended to be dedicated to the publicregardless of whether such disclosure is explicitly recited in theclaims. No claim element is to be construed as a means plus functionunless the element is expressly recited using the phrase “means for.”

What is claimed is:
 1. A method for data communications comprising:selecting between versions of one or more clock signals as an output ofa first-level delay element of a first lane, the versions of the one ormore clock signals including at least two versions of a first clocksignal, wherein each version of the first clock signal is subject to adifferent delay with respect to the first clock signal; providing theoutput of the first-level delay element of the first lane tosecond-level delay elements in second and third lanes, wherein the firstlane and the second and third lanes provide clocks to be used incorresponding data lanes; providing a root clock used to controltransmission of data on a communications link by selecting between theoutput of the first-level delay element of the first lane and outputs offirst-level delay elements of the second and third lanes; and selectinginputs for a first level delay element of at least one lane and forsecond-level delay elements of one or more lanes to minimize skewbetween the root clock and the clocks provided by the second and thirdlanes.
 2. The method of claim 1, wherein the first lane has a transistorpath that matches a transistor path of one or more data lanes.
 3. Themethod of claim 1, wherein inputs for the first level delay element ofthe first lane and the inputs for a second-level delay element in thefirst lane are selected to minimize skew between the root clock and theclocks provided by the second and third lanes.
 4. The method of claim 1,wherein inputs for first level delay elements of the second and thirdlanes and the inputs for second-level delay elements of the second andthird lanes are selected to minimize skew between the root clock and theclocks provided by the second and third lanes.
 5. The method of claim 1,wherein inputs for first level delay elements of the second and thirdlanes and the inputs for second-level delay elements of the second andthird lanes are selected to minimize skew between data lanes associatedwith the root clock and data lanes associated with the clocks providedby the second and third lanes.
 6. The method of claim 1, wherein thecommunications link comprises differentially encoded data and clocksignals.
 7. The method of claim 1, wherein the communications linkcommunicatively couples a first integrated circuit (IC) device with asecond IC device.
 8. The method of claim 1, wherein the one or moreclock signals includes a left clock signal that is delayed by one ormore of a first plurality of delay elements and a right clock signalthat is delayed by one or more of a second plurality of delay elements,wherein the first plurality of delay elements includes a number of delayelements corresponding to a number of data lanes disposed to the left ofa first data lane on an IC, and wherein the second plurality of delayelements includes a number of delay elements corresponding to a numberof data lanes disposed to the right of the first data lane.
 9. Themethod of claim 8, wherein selecting between versions of the one or moreclock signals as an output of the first-level delay element of the firstlane comprises: selecting between the left clock signal and the rightclock signal.
 10. The method of claim 8, wherein selecting betweenversions of the one or more clock signals as an output of thefirst-level delay element of the first lane comprises: selecting betweenan active clocking mode and a power-down mode for each first-level delayelement.
 11. The method of claim 1, further comprising: powering downone or more delay elements that do not contribute to the provision ofthe root clock.
 12. An apparatus comprising: an interface to acommunications link that communicatively couples a first integratedcircuit (IC) device with a second IC device; means for selecting betweenversions of one or more clock signals as an output of a first-leveldelay element of a first clock lane, wherein the versions of the one ormore clock signals include at least two versions of a first clocksignal, wherein each version of the first clock signal is subject to adifferent delay with respect to the first clock signal; means forproviding a root clock as an output of the first clock lane, wherein theroot clock is used for transmitting data on the communications link,wherein the means for providing the root clock includes selection logicconfigured to select between the output of the first-level delay elementof the first clock lane and outputs of first-level delay elements of aplurality of other clock lanes; and means for selecting inputs for afirst level delay element of at least one clock lane and forsecond-level delay elements of one or more clock lanes to minimize skewbetween the root clock and clocks provided by the other clock lanes,wherein the root clock and output clocks provided by the plurality ofother clock lanes are used in corresponding data lanes.
 13. Theapparatus of claim 12, wherein the first clock lane has a transistorpath that matches a corresponding transistor path in one or more datalanes.
 14. The apparatus of claim 12, wherein inputs for the first leveldelay element of the first clock lane and the inputs for a second-leveldelay element in the first clock lane are selected to minimize skewbetween the root clock and the output clocks provided by the pluralityof other clock lanes.
 15. The apparatus of claim 12, wherein inputs forfirst level delay elements of the plurality of other clock lanes and theinputs for second-level delay elements of the plurality of other clocklanes are selected to minimize skew between the root clock and theoutput clocks provided by the plurality of other clock lanes.
 16. Theapparatus of claim 12, wherein inputs for first level delay elements ofthe plurality of other clock lanes and the inputs for second-level delayelements of the plurality of other clock lanes are selected to minimizeskew between data lanes associated with the root clock and data lanesassociated with the output clocks provided by the plurality of otherclock lanes.
 17. The apparatus of claim 12, wherein the one or moreclock signals includes a left clock signal that is delayed by one ormore of a first plurality of delay elements and a right clock signalthat is delayed by one or more of a second plurality of delay elements,wherein the first plurality of delay elements includes a number of delayelements corresponding to a number of data lanes disposed to the left ofa first data lane on an IC, and wherein the second plurality of delayelements includes a number of delay elements corresponding to a numberof data lanes disposed to the right of the first data lane.
 18. Theapparatus of claim 17, wherein the means for selecting between versionsof the one or more clock signals includes logic configured to select theleft clock signal or the right clock signal as the first clock signal.19. The apparatus of claim 12, wherein the means for selecting betweenversions of the one or more clock signals includes logic configured topower down delay elements that have outputs which are not used in theprovision of the root clock.
 20. The apparatus of claim 12, wherein themeans for selecting between versions of the one or more clock signalsincludes logic configured to select between an active clocking mode anda power-down mode for each first-level delay element.
 21. A clock delaymatrix comprising: a plurality of clock lanes on an integrated circuit(IC) device, wherein each clock lane is configurable to provide a clockfor controlling data transmissions in a corresponding data lane of acommunications interface, and wherein each clock lane includes:first-level multiplexing logic configured to select between versions ofone or more first-level clock signals; second-level multiplexing logicconfigured to provide a root clock by selecting between an output of thefirst-level multiplexing logic and outputs of first-level multiplexinglogic of two other clock lanes; and a controller that configures thefirst-level multiplexing logic and the second-level multiplexing logicof the plurality of clock lanes, wherein the controller is configured tocontrol clock skew between outputs of the plurality of clock lanes byconfiguring the first level multiplexing logic and the second-levelmultiplexing logic in the each clock lane to minimize skew betweenoutputs of the each clock lane and the two other clock lanes.
 22. Theclock delay matrix of claim 21, wherein each clock lane has a transistorpath that matches a transistor path in a corresponding data lane. 23.The clock delay matrix of claim 21, wherein the controller controlsclock skew by configuring the first level multiplexing logic and thesecond-level multiplexing logic in each clock lane to minimize skewbetween data signals transmitted on the communications interface. 24.The clock delay matrix of claim 21, wherein the controller controlsclock skew by configuring the first level multiplexing logic and thesecond-level multiplexing logic in each clock lane to minimize skewbetween clock and data signals transmitted on the communicationsinterface.
 25. The clock delay matrix of claim 21, wherein the one ormore first-level clock signals includes a left clock signal that isdelayed by one or more of a first plurality of delay elements and aright clock signal that is delayed by one or more of a second pluralityof delay elements, wherein the first plurality of delay elementsincludes a number of delay elements corresponding to a number of datalanes disposed to the left of a first data lane on the IC, and whereinthe second plurality of delay elements includes a number of delayelements corresponding to a number of data lanes disposed to the rightof the first data lane.
 26. The clock delay matrix of claim 25, furthercomprising: base clock selection logic that is configurable to providethe left clock signal or the right clock signal as a first-level clocksignal.
 27. The clock delay matrix of claim 21, wherein the one or morefirst-level clock signals include the left clock signal and the rightclock signal.
 28. The clock delay matrix of claim 21, whereinmultiplexing logic that does not provide an output used to provide theroot clock is powered down.
 29. The clock delay matrix of claim 21,wherein the controller is configured to select between an activeclocking mode and a power-down mode for portions of the first levelmultiplexing logic and the second-level multiplexing logic.